package cn.com.bluemoon.daps.sync.vo.model2dev;

import cn.com.bluemoon.daps.common.domain.BmPageRequestVo;
import cn.com.bluemoon.daps.common.domain.UserPermissionApi;
import cn.com.bluemoon.daps.common.enums.SyncStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Optional;

/**
 * @author Jarod.Kong
 * @date 2021/6/16 21:52
 */
@ApiModel(description = "开发同步模型表分页查询")
@Data
public class SyncTablePageVo extends BmPageRequestVo  implements UserPermissionApi<String> {
    @ApiModelProperty("模型id")
    @NotNull(message = "模型id入参必填")
    private String modelId;

    @ApiModelProperty("表中英文关键字")
    private String keyword;

    @ApiModelProperty(
            value = "同步开发库状态： SYNC_WAIT 未同步、 SYNC_DOING 同步中、 SYNC_DONE 已同步、 SYNC_ERROR 同步失败、SYNC_ALL 同步全部 （全字母必须大写）",
            example = "SYNC_ALL")
    private SyncStatus devStatus;

    @ApiModelProperty(
            value = "同步测试库状态： SYNC_WAIT 未同步、 SYNC_DOING 同步中、 SYNC_DONE 已同步、 SYNC_ERROR 同步失败、SYNC_ALL 同步全部 （全字母必须大写）",
            example = "SYNC_ALL")
    private SyncStatus testStatus;

    /**
     *
     * @return trim str
     */
    @ApiModelProperty(hidden = true)
    public String getKeywordTrim() {
        return Optional.ofNullable(keyword).map(String::trim).map(String::toLowerCase).orElse(null);
    }

    /**
     * @return 获取mvc传输中对应模型的id
     */
    @Override
    @ApiModelProperty(hidden = true)
    public String getUserPermissionKeyValue() {
        return getModelId();
    }
}
